STM32 电机控制 SDK MCFW-6.4.1
用于构建驱动 STM32 的 PMSM 电机应用的软件开发套件
开环描述与使用

上一集:运动控制协议套件↤|目录 |↦ 下一页:固件错误

概述

将电机运行为开环(OL)模式通常用于调试。将从指令到电机的每一步拆解,以确定意外行为发生在哪个阶段非常有用。OL模式有两种:电流模式和电压模式。

开环电压模式

闭环与开环电压算法结构的比较

在通过开环电压模式调试时,如图1所示,用户通过电压参考Vq和速度参考直接给出参考。θth 的位置是通过理论上的加速和速度计算的。Vd会自动设为零,因为在开环模式下通常无用(不需要扭矩)。Vq 由用户以最大输出电压幅度的百分比给出。详情请参见圆圈限制。必须记住,由于闭环不再计算电流,且电机两端的高电压感应出强电流,系统可能会进入过电流状态。用户应在低Vq百分比下使用开环电压模式以避免此状况。

最后,尽管未用于PID计算,但iα和iβ仍可供MotorPilot显示。

开环电流模式

闭环与开环电流算法结构的比较

开环电流模式用于测试系统保持用户给定固定电流参考的能力。速度参考和智商均由用户设定。θth 的位置是通过理论上的加速和速度计算的。然后通过Iq和IdGenerate一个恒定的旋转场,其速度由速度参考确定。

启用开环功能

MCSDK和MotorPilot提供两种开环模式:电压和电流。这两种模式可以通过 WorkBench 同时启用,方法是在创建项目时勾选“阶段配置”标签中的“开放循环”框。查看Generate的IOC文件,这又回到了将M1_DBG_OPEN_LOOP_ENABLE设为true。电压模式和电流模式的选择由用户通过固件或MotorPilot决定。

通过工槽实现开环

MotorPilot 的使用

第一步:在Motor Pilot界面左侧的滚动菜单中选择开放环模式。

步骤2(仅开环电压模式):设置电压参考。低速时低速启动,电机转速增加时需要增加。如果未更改,则使用drive_parameters.h中的默认值OPEN_LOOP_VOLTAGE_d。价值以百分比计,如前所述。

步骤2 bis(仅开环电流模式):设定Flux的参考。低速时低速启动,电机转速增加时需要增加。如果不变,则使用parameters_conversion.h中的默认值DEFAULT_FLUX_COMPONENT。安培数值;等同于同我。

第三步:设置速度坡。/!\ 注意加速必须保持较低,否则发动机会熄火。(通常低于3.0的速度/持续时间比即可达成,尽管速度必须与电压/通量参考保持一致。)点击执行速度坡度以存储设置。

第四步:启动发动机。

第五步:根据需求调整速度和通量/电压参考,重复步骤5和2。

通过MotorPilot进行开环选择

通过API的固件使用情况

第一步:选择开环模式,使用MCI_SetOpenLoopVoltageMode(&Mci[motorID])或MCI_SetOpenLoopCurrentMode(&Mci[motorID])函数(MCI_SetOpenLoopCurrent和MCI_SetOpenLoopVoltage应视为已弃用,未来将被移除)。

步骤2(仅开环电压模式):通过 OL_UpdateVoltage(&OpenLoop_ParamsMx,((Voltage_Reference * 32767) / 100))函数设置电压参考。

步骤2 bis(仅开环电流模式):通过MCI_SetCurrentReferences(和Mci[motorID], Iqd)函数设置电流参考。注意 Iqd 是一个需要参数 ID 和 Iq 作为参数的 qd_t结构。id是通量参考,而智商通常是0。

第三步:通过MCI_ExecSpeedRamp(&Mci[motorID],(int3_t)((Speed_rpm * SPEED_UNIT) / U_RPM), Duration_ms)函数设置速度斜坡。

第四步:通过MC_StartMotor**x**()启动电机。

函数中的加粗文本部分应由用户根据其需求和系统设置。

使用场景

正常情况


FOC无传感器启动时的相电流

这张图展示了无传感器启动时常见的电流曲线。校准阶段将转子设定为初始位置,随后电机在开环加速阶段开始旋转,一旦BEMF正确估计,系统切换到闭环并启用电流控制。如果电流状况有问题,建议在开环模式下做一些测试,以了解硬件的表现。

开环功能旨在缩小固件的功能范围,转而关注硬件的行为。这样就能更容易地找出问题的根本原因。第一步是尽可能缩小功能范围。这样,如果系统无法正常工作,问题的位置就比较直接了。相反,如果系统正常工作,那么可以自信地扩大范围,同时知道系统中哪些部分值得信赖。

使用开环功能时,可以预期出现以下曲线:


开环功能系统中的相电流

备注:曲线的总体方向与所选开环模式无关。然而,根据运行电机的不同,开环电压模式可能显示的正弦曲线较少。这揭示了第六谐波的效果。得益于电流控制,开环电流模式(和闭环)可以减弱这种行为。

开环电压模式

最严格的模式是开环电压,所以它自然会第一个检查。


开环过程中缺相系统的相电流

下图展示了开环电压模式下故障系统的示例;A阶段缺失了。从这里开始,问题就在于以下几点:

  • 电机有问题:缺相未连接,或者某处短路,因此电机相也没有电流流出。
  • 在将 Vq 转换为占空比时存在固件问题。只有在代码这部分做了修改时才应检查。

注意:如果用MotorPilot绘制电流,也可能存在电流感应问题。虽然在开环电压模式下固件不使用电流值,但仍可通过MotorPilot访问。然而,如果使用示波器上的外部电流探头,这个问题可以被排除。需要注意的是,仅此问题不会影响电机转动,因为这些电流不被前导器使用,仅显示:如果电机在转动但 MotorPilot 仍未显示某一相位,或 MotorPilot 与示波器存在重大差异,可以合理推测问题出在电流感应上。

开环电流模式

一旦开环电压模式成功,可以放心地考虑:

  • 马达功能正常
  • 驱动程序功能正常

不过,开环电流模式下你仍可能遇到问题,这意味着电流感应是原因。以下是可能问题的非详尽列表:

  • 当前电源板的感应部分有硬件问题:缺了分流线、运算放大器坏了、配置错误......
  • 部分采样相位是反相的:驱动器标注相A与电流检测标注相A不同。
  • 采样窗口是错误的:采样是在电流不稳定时进行的。这通常是在低估了驾驶员的死时间、上升时间或噪音时间时。
  • 放大增益设置错误。在这种情况下,显示的电流波形是正确的,但缩放不对。通过将MotorPilot与示波器进行比较,这一点很容易看出。

开环电流模式是MCSDK在切换到闭环前用于提升电流的模式。这意味着一个功能齐全的开环设置能够成功提升。甚至可以在切换到常规项目前,通过开放循环手动设置斜坡。

上一集:运动控制协议套件↤|目录 |↦ 下一页:固件错误